var verify = {};

// 检查字符是否是合法的
verify.checkIllegalWord = function(text){
	var checkResult = true;	// 初始默认字符串可用
	var illegalWord = '';
	for(var i=0; i < illegalWordArray.length; i++){
		illegalWord = illegalWordArray[i];
		//	var reg_pwd = /^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,20}$/;
		var reg_pwd = new RegExp(illegalWord);
	//	alert('illegalWord: ' +illegalWord+ ', illegalWord == text : ' + (illegalWord == text) + ', reg_pwd.test(text): ' + reg_pwd.test(text));
		if (illegalWord == text || reg_pwd.test(text)) {
			checkResult = false;	// 只要有一个符合非法特征，即不可用
			break;
		}
	}
//	alert(checkResult);
	return checkResult;
}
/**
 * 邮政编码的校验
 */
verify.isPostalCode = function(postalCode){
	var reg = /^[0-9]{6}$/;
	if(!reg.test(postalCode)){
		return false;
	}
	return true;
}

/**
 * 传真号码校验
 */
verify.isFax = function(faxStr){
	var reg = /^(\d{3,4}-)?\d{7,8}$/;
	if(!reg.test(faxStr)){
		return false;
	}
	return true;
}		

/**
 * 人名正则校验
 */
verify.isRealName = function(realName){
	var reg = /^[\u4E00-\u9FA5\uf900-\ufa2d·s]{2,20}$/;
	if(!reg.test(realName)){
		return false;
	}
	return true;
}

/**
 * 用途：校验ip地址的格式 输入：strIP：ip地址 返回：如果通过验证返回true,否则返回false；
 */
verify.isIP = function(strIP) {
	if (isNull(strIP))
		return false;
	var re = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g;// 匹配IP地址的正则表达式
	if (re.test(strIP)) {
		if (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256
				&& RegExp.$4 < 256)
			return true;
	}
	return false;
};
/**
 * 返回长度
 * 
 * @param val
 * @returns {Number}
 */
verify.getByteLe = function(val) {
	var len = 0;
	if (val == "" || val == null || val == undefined) {
		return len;
	}
	for ( var i = 0; i < val.length; i++) {
		if (val[i].match(/[^\x00-\xff]/ig) != null) // 全角
			len += 2;
		else
			len += 1;
	}
	return len;
};

/*
 * 用途：检查输入字符串是否为空或者全部都是空格 输入：str 返回： 如果全是空返回true,否则返回false
 */
verify.isNull = function(str) {
	if (str == undefined || str == null || str == '')
		return true;
	var regu = "^[ ]+$";
	var re = new RegExp(regu);
	return re.test(str);
};

/*
 * 用途：检查输入字符串是否为空或者全部都是空格 输入：str 返回： 如果全是空返回true,否则返回false
 */
verify.isNotNull = function(str) {
	if (str == undefined || str == null || str == '')
		return false;
	var regu = "^[ ]+$";
	var re = new RegExp(regu);
	return !re.test(str);
};
/*
 * 用途：检查输入对象的值是否符合整数格式 输入：str 输入的字符串 返回：如果通过验证返回true,否则返回false
 * 
 */
verify.isInteger = function(str) {
	var regu = /^[-]{0,1}[0-9]{1,}$/;
	return regu.test(str);
};

/*
 * 用途：检查输入手机或者座机号码是否正确 输入： s：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.checkTel = function(s) {
	var regu = /(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}1[0-9][0-9]{9}$)/;
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
};
/**
 * 用途： 检查字符串是否是座机号码 区号-号码  格式  输入： s：字符串 返回： 如果通过验证返回true,否则返回false
 */
verify.checkTelephone = function(s) {
	var regu = /(^[0-9]{3,4}\-[0-9]{7,8}$)/;
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
};
/*
 * 用途：检查输入电话号码, 可以为手机是否正确 输入： s：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.checkMobile = function(s) {
	var regu = /^[1][3|4|5|7|8][0-9]{9}$/;
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
};

/*
 * 用途：检查输入字符串是否符合正整数格式 输入： s：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.isPositiveInteger = function(s) {
	var re = /^[1-9]\d*$/ ;
    return re.test(s);
};

/*
 * 用途：检查输入字符串是否符合6位正整数格式 输入： s：字符串 返回： 如果通过验证返回true,否则返回false
 * 主要用于校验验证码
 */
verify.isVerificationCodeFormat = function(s) {
	var re = /^[0-9]{6}$/ ;
    return re.test(s)
};

/*
 * 用途：检查输入字符串是否是带小数的数字格式,可以是负数 输入： s：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.isDecimal = function(str) {
	if (verify.isInteger(str))
		return true;
	var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
	if (re.test(str)) {
		if (RegExp.$1 == 0 && RegExp.$2 == 0)
			return false;
		return true;
	} else {
		return false;
	}
};

/*
 * 用途：检查输入字符串是否是带1,2位小数的数字格式, 只能为正数, 输入： s：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.isPositiveDecimal2d = function(str) {
	var re = /^[0-9]+(.[0-9]{1,2})?$/;
	if (re.test(str)) {
		return true;
	} else {
		return false;
	}
};

/*
 * 用途：检查输入对象的值是否符合端口号格式 输入：str 输入的字符串 返回：如果通过验证返回true,否则返回false
 * 
 */
verify.isPort = function(str) {
	return (isNumber(str) && str < 65536);
};

/*
 * 用途：检查输入字符串是否符合金额格式 格式定义为带小数的正数，小数点后最多三位 输入： s：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.isMoney = function isMoney(s) {
	var regu = "^[0-9]+[\.][0-9]{0,3}$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
};
/*
 * 用途：检查输入字符串是否只由英文字母 组成 输入： s：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.isLetter = function(s) {// 判断是否是字母
	var regu = "^[a-zA-Z]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
};
/*
 * 用途：检查输入字符串是否只由英文字母和数字和下划线组成 输入： s：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.isNumberOrLetter1 = function(s) {// 判断是否是数字或字母
	var regu = "^[0-9a-zA-Z\_]{5,18}$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
};
/*
 * 用途：检查输入字符串是否只由英文字母和数字组成 输入： s：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.isNumberOrLetter2 = function(s) {// 判断是否是数字或字母
	var regu = "^[0-9a-zA-Z]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
};
/*
 * 用途：检查输入字符串是否符合密码的校验规则, 长度在{0} 和 {1} 之间, 此方法最好用于 密码的校验  返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.isNumberOrLetter3 = function(s) {// 判断是否是数字或字母
	if(verify.isNull(s)){
		return false;
	}
	var length = s.length;
	if(length > 20 || length < 5){
		return false;
	}
	return true;
};
/*
 * 用途：检查输入字符串是否只由汉字、字母、数字组成 输入： value：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.isChinaOrNumbOrLett = function(s) {// 判断是否是汉字、字母、数字组成
	var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
};

/*
 * 用途：检查输入字符串是否只由6-50位的纯汉字组成 输入： value：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.isChinaHanzi = function(s) {
	var regu = "^[\u4e00-\u9fa5]{6,50}$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
};

/*
 * 用途：判断是否是日期 输入：date：日期；fmt：日期格式 返回：如果通过验证返回true,否则返回false
 */
verify.isDate = function(date, fmt) {
	if (fmt == null)
		fmt = "yyyyMMdd";
	var yIndex = fmt.indexOf("yyyy");
	if (yIndex == -1)
		return false;
	var year = date.substring(yIndex, yIndex + 4);
	var mIndex = fmt.indexOf("MM");
	if (mIndex == -1)
		return false;
	var month = date.substring(mIndex, mIndex + 2);
	var dIndex = fmt.indexOf("dd");
	if (dIndex == -1)
		return false;
	var day = date.substring(dIndex, dIndex + 2);
	if (!isNumber(year) || year > "2100" || year < "1900")
		return false;
	if (!isNumber(month) || month > "12" || month < "01")
		return false;
	if (day > getMaxDay(year, month) || day < "01")
		return false;
	return true;
};

verify.getMaxDay = function(year, month) {
	if (month == 4 || month == 6 || month == 9 || month == 11)
		return "30";
	if (month == 2)
		if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
			return "29";
		else
			return "28";
	return "31";
};

/*
 * 用途：字符1是否以字符串2结束 输入：str1：字符串；str2：被包含的字符串 返回：如果通过验证返回true,否则返回false
 * 
 */
verify.isLastMatch = function(str1, str2) {
	var index = str1.lastIndexOf(str2);
	if (str1.length == index + str2.length)
		return true;
	return false;
};

/*
 * 用途：字符1是否以字符串2开始 输入：str1：字符串；str2：被包含的字符串 返回：如果通过验证返回true,否则返回false
 * 
 */
verify.isFirstMatch = function(str1, str2) {
	var index = str1.indexOf(str2);
	if (index == 0)
		return true;
	return false;
};

/*
 * 用途：字符1是包含字符串2 输入：str1：字符串；str2：被包含的字符串 返回：如果通过验证返回true,否则返回false
 * 
 */
verify.isMatch = function isMatch(str1, str2) {
	var index = str1.indexOf(str2);
	if (index == -1)
		return false;
	return true;
};

/*
 * 用途：检查输入的起止日期是否正确，规则为两个日期的格式正确， 且结束如期>=起始日期 输入： startDate：起始日期，字符串
 * endDate：结束如期，字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.checkTwoDate = function(startDate, endDate) {
	if (!isDate(startDate)) {
		alert("起始日期不正确!");
		return false;
	} else if (!isDate(endDate)) {
		alert("终止日期不正确!");
		return false;
	} else if (startDate > endDate) {
		alert("起始日期不能大于终止日期!");
		return false;
	}
	return true;
};

/*
 * 用途：检查输入的Email信箱格式是否正确 输入： strEmail：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.isEmail = function(strEmail) {
	// var emailReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
	var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
	if (emailReg.test(strEmail)) {
		//符合规则
		return true;
	} else {
		return false;
	}
};

/*
 * 用途：检查输入的电话号码格式是否正确 输入： strPhone：字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.checkPhone = function(strPhone) {
	var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/;
	var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/;
	var prompt = "您输入的电话号码不正确!";
	if (strPhone.length > 9) {
		if (phoneRegWithArea.test(strPhone)) {
			return true;
		} else {
			alert(prompt);
			return false;
		}
	} else {
		if (phoneRegNoArea.test(strPhone)) {
			return true;
		} else {
			alert(prompt);
			return false;
		}

	}
};

/*
 * 用途：检查复选框被选中的数目 输入： checkboxID：字符串 返回： 返回该复选框中被选中的数目
 * 
 */

verify.checkSelect = function(checkboxID) {
	var check = 0;
	var i = 0;
	if (document.all(checkboxID).length > 0) {
		for (i = 0; i < document.all(checkboxID).length; i++) {
			if (document.all(checkboxID).item(i).checked) {
				check += 1;
			}

		}
	} else {
		if (document.all(checkboxID).checked)
			check = 1;
	}
	return check;
};

verify.getTotalBytes = function(varField) {
	if (varField == null)
		return -1;

	var totalCount = 0;
	for (i = 0; i < varField.value.length; i++) {
		if (varField.value.charCodeAt(i) > 127)
			totalCount += 2;
		else
			totalCount++;
	}
	return totalCount;
};

verify.getFirstSelectedValue = function(checkboxID) {
	var value = null;
	var i = 0;
	if (document.all(checkboxID).length > 0) {
		for (i = 0; i < document.all(checkboxID).length; i++) {
			if (document.all(checkboxID).item(i).checked) {
				value = document.all(checkboxID).item(i).value;
				break;
			}
		}
	} else {
		if (document.all(checkboxID).checked)
			value = document.all(checkboxID).value;
	}
	return value;
};

verify.getFirstSelectedIndex = function(checkboxID) {
	var value = -2;
	var i = 0;
	if (document.all(checkboxID).length > 0) {
		for (i = 0; i < document.all(checkboxID).length; i++) {
			if (document.all(checkboxID).item(i).checked) {
				value = i;
				break;
			}
		}
	} else {
		if (document.all(checkboxID).checked)
			value = -1;
	}
	return value;
};

verify.selectAll = function(checkboxID, status) {

	if (document.all(checkboxID) == null)
		return;

	if (document.all(checkboxID).length > 0) {
		for (i = 0; i < document.all(checkboxID).length; i++) {

			document.all(checkboxID).item(i).checked = status;
		}
	} else {
		document.all(checkboxID).checked = status;
	}
};

verify.selectInverse = function(checkboxID) {
	if (document.all(checkboxID) == null)
		return;

	if (document.all(checkboxID).length > 0) {
		for (i = 0; i < document.all(checkboxID).length; i++) {
			document.all(checkboxID).item(i).checked = !document
					.all(checkboxID).item(i).checked;
		}
	} else {
		document.all(checkboxID).checked = !document.all(checkboxID).checked;
	}
};

verify.checkDate = function(value) {
	if (value == '')
		return true;
	if (value.length != 8 || !isNumber(value))
		return false;
	var year = value.substring(0, 4);
	if (year > "2100" || year < "1900")
		return false;

	var month = value.substring(4, 6);
	if (month > "12" || month < "01")
		return false;

	var day = value.substring(6, 8);
	if (day > getMaxDay(year, month) || day < "01")
		return false;

	return true;
};

/*
 * 用途：检查输入的起止日期是否正确，规则为两个日期的格式正确或都为空 且结束日期>=起始日期 输入： startDate：起始日期，字符串 endDate：
 * 结束日期，字符串 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.checkPeriod = function(startDate, endDate) {
	if (!checkDate(startDate)) {
		alert("起始日期不正确!");
		return false;
	} else if (!checkDate(endDate)) {
		alert("终止日期不正确!");
		return false;
	} else if (startDate > endDate) {
		alert("起始日期不能大于终止日期!");
		return false;
	}
	return true;
};

/*
 * 用途：检查证券代码是否正确 输入： secCode:证券代码 返回： 如果通过验证返回true,否则返回false
 * 
 */
verify.checkSecCode = function(secCode) {
	if (secCode.length != 6) {
		alert("证券代码长度应该为6位");
		return false;
	}

	if (!isNumber(secCode)) {
		alert("证券代码只能包含数字");

		return false;
	}
	return true;
};

/*
 * 用途：检查用户名是否符合 英文, 数字和下划线组合且不能以下划线开头的规则,  如果通过验证返回true,否则返回false
 * 
 */
verify.checkname = function(name) {
	var reg_username = /^(?!_)[a-zA-Z0-9_]{6,20}$/;
	if (reg_username.test(name)) {
		//符合规则
		return true;
	} else {
		return false;
	}
	
};

/*
 * 用途：检查密码是否符合 英文, 数字和各个特殊符号的规则,  如果通过验证返回true,否则返回false
 * 格式应为8-20位的字母、数字和特殊符号的组合
 */
verify.checkPassword = function(pwd) {
	var reg_pwd = /^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,20}$/;
	if (reg_pwd.test(pwd)) {
		//符合规则
		return true;
	} else {
		return false;
	}
	
};

/*******************************************************************************
 * function:cTrim(sInputString,iType) description:字符串去空格的函数
 * parameters:iType：1=去掉字符串左边的空格
 * 
 * 2=去掉字符串左边的空格 0=去掉字符串左边和右边的空格 return value:去掉空格的字符串
 ******************************************************************************/
verify.cTrim = function(sInputString, iType) {
	var sTmpStr = ' ';
	var i = -1;

	if (iType == 0 || iType == 1) {
		while (sTmpStr == ' ') {
			++i;
			sTmpStr = sInputString.substr(i, 1);
		}
		sInputString = sInputString.substring(i);
	}

	if (iType == 0 || iType == 2) {
		sTmpStr = ' ';
		i = sInputString.length;
		while (sTmpStr == ' ') {
			--i;
			sTmpStr = sInputString.substr(i, 1);
		}
		sInputString = sInputString.substring(0, i + 1);
	}
	return sInputString;
};
/*******************************************************************************
 * 验证是否为http://或https://开头的url地址
 ******************************************************************************/
verify.isHttp=function(url){
	if(url == null || url == '' || url == undefined){
		return false;
	}
	if(url.indexOf('http://') == 0 || url.indexOf('https://') == 0){
		return true;
	}
	return false;
}

/*******************************************************************************
 * 验证是残疾证号, 为正确的残疾证号格式 返回true, 
 ******************************************************************************/
verify.isDeformityCard=function(str){
	//非法字符判断
	var reg = /^[0-9]{14}[0-9a-zA-Z]{4}[1-7]{1}[1-4]{1}[B]?[0-9]?/;
	var checkResult = reg.test(str);
	return checkResult;
}

/*******************************************************************************
 * 验证是否为座机号或者手机号, 符合其中任意一种返回true
 ******************************************************************************/
verify.isMobileOrPhone = function(str){
	var regTel1 = /^(0|86|17951)?(13[0-9]|15[012356789]|17[01678]|18[0-9]|14[57])[0-9]{8}$/; 
	var regTel2 = /^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$/;
	if(!regTel1.test(str)&&!regTel2.test(str)){
		return false;
	}
	return true;
}

/*******************************************************************************
 * 验证 企业信用代码, 合乎格式返回true
 ******************************************************************************/
verify.orgcodeValidate = function(value){
	var regOrgnizationCode = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/;
	if(regOrgnizationCode.test(value)){
		return true;
	}else{
		return false;
	}
}

/*******************************************************************************
 * 验证 文件名是否为图片格式, 如果是返回true
 ******************************************************************************/
verify.isImageFormat = function(fileName){
	if(verify.isNull(fileName)){
		return false;
	}
	var imgSuffixArray = '.bmp.jpg.png.tif.gif.pcx.tga.exif.fpx.svg.psd.cdr.pcd.dxf.ufo.eps.ai.raw.wmf.webp';
	var suffix = fileName.substring(fileName.lastIndexOf('.')).toLowerCase();
	if(imgSuffixArray.indexOf(suffix) > 0){
		return true;
	}
	return false;
}
